<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js数组</title>
</head>
<body>
按F12查看Console
<script>
    /*定义数组
    * var 变量名 = new Array(元素列表);方式一
    * var 变量名 = [元素列表];方式二
    * 访问数组
    * arr[索引] = 值*/
    var arr = new Array();
    var arr2 = [1, 2, 3, "a", 'b', true, undefined, null, NaN];//可以各种类型混合存储

    console.log(arr)//[]
    console.log(arr2)//(9) [1, 2, 3, 'a', 'b', true, undefined, null, NaN]

    console.log(arr[0]);//undefined
    console.log(arr2[0]);//1
    //join:将数组转成字符串
    console.log(arr2.join()); //1,2,3,a,b,true,,,NaN   默认分隔符
    console.log(arr2.join("-")); //1-2-3-a-b-true---NaN  指定分隔符
    //向数组末尾添加数据
    arr.push(100);
    arr.push(200);
    console.log(arr)//[100, 200]
    //弹出末尾数据
    let pop = arr.pop();
    console.log(pop);//200
    console.log(arr);//[100]

    console.log("============================================")
    // 调用forEach方法，传入一个匿名函数，用于处理每个遍历到的元素数据
    arr2.forEach(function (element) {
        console.log("forEach:" + element)
    })

    //es6新语法:箭头函数(类似Java中Lambda表达式)
    arr2.forEach((element) => {
        console.log("forEach:" + element)
    })

    //js中数组非常特殊  js数组长度可以随意改变
    var arr3 = [];
    arr3[0] = 100;
    arr3[50] = 150;
    arr3[100] = 200;
    console.log(arr3)//(101) [100, 空属性 × 49, 150, 空属性 × 49, 200]
    console.log(arr3[55])//undefined
    console.log(arr3[300])//undefined

    //js的数组甚至可以当作map集合使用
    arr3["name"] = "zs";
    arr3["age"] = 18;
    console.log(arr3)//(101) 100, 空属性 × 49, 150, 空属性 × 49, 200, name: 'zs', age: 18]   可以看到键值对"name"="zs" "age"=18 在数组末尾,但是并不算作数组长度

    console.log(arr3["name"]);//zs
</script>
</body>
</html>